﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Simulator
{
    /// <summary>
    /// блок параллельности
    /// </summary>
    [Serializable]
    public class Parall: Block
    {
        public Block Next2 { get; set; }
        private Entity e2;
        /// <summary>
        /// Копия сущности, которая была передана далее
        /// </summary>
        public Entity CopyOfEntity{ get {return e2;}}
        public Parall()
        {

        }
        /// <summary>
        /// Положить сущность в блок.
        /// </summary>
        /// <param name="e">Cущность, которую кладем</param>
        public override void PutEntity(ref Entity e)
        {
            e.OwnerBlock = this;
        }
        /// <summary>
        /// Передать сущность далее.  Она при этом раздваивается, получить ее копию нужно по свойству CopyOfEntity
        /// </summary>
        /// <param name="e">Сущность, которую передаем</param>
        public void TransferEntity(ref Entity e)
        {
            e2 = new Entity(e);
            e.TimeRemained = 0;
            e2.TimeRemained = 0;
            Next.PutEntity(ref e);
            Next2.PutEntity(ref e2);
        }

        public override void ClearEntities()
        {
            e2 = null;
        }
    }
}
